package sgsi.controller.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import sgsi.controller.dao.TipoDePaletDao;
import sgsi.model.entidades.TipoDePalet;

public class TipoDePaletDaoHibernateImpl extends HibernateDaoSupport implements
		TipoDePaletDao {

	private static final String BUSCAR_POR_NOMBRE = "select t from TipoDePalet t where t.estaBorrado is false and t.nombre like ?";
	private static final String BUSCAR_POR_CODIGO = "select t from TipoDePalet t where t.estaBorrado is false and t.codigoTipoDePalet = ?";
	private static final String OBTENER_TODOS = "select t from TipoDePalet t where t.estaBorrado is false order by t.codigoTipoDePalet";

	public TipoDePalet guardar(TipoDePalet tipoDePalet) {
		getHibernateTemplate().saveOrUpdate(tipoDePalet);
		return tipoDePalet;
	}

	@SuppressWarnings("unchecked")
	public List<TipoDePalet> obtenerTodos() {
		return getHibernateTemplate().find(OBTENER_TODOS);
	}

	@SuppressWarnings("unchecked")
	public List<TipoDePalet> obtenerPorNombre(String nombre) {
		return getHibernateTemplate().find(BUSCAR_POR_NOMBRE,
				"%" + nombre + "%");

	}

	public TipoDePalet obtenerPorCodigo(int codigo) {
		 if (getHibernateTemplate().find(BUSCAR_POR_CODIGO,	codigo).isEmpty()) {
			 return null;
		 }
		return (TipoDePalet) getHibernateTemplate().find(BUSCAR_POR_CODIGO,
				codigo).get(0);
	}

	public void eliminar(TipoDePalet tipoDePalet) {
		getHibernateTemplate().delete(tipoDePalet);
	}

	public void eliminar(int codigo) {
		eliminar(obtenerPorCodigo(codigo));
	}

}
